Next:
Serialization
, Previous:
Global Object Singleton
, Up:
Index
Prototype Factory
자주 복제해서 사용할 객체를 전역변수를 선언해서 어디서든 복제해서 사용할 수 있다.
혹은, 프로토타입을 저장할 별도의 클래스를 생성하고, 사용자가 원할 때 목적에 맞는 복제본을
요구받는 시점에 만들어 제공해서 복제할 수 있다.
struct
EmployeeFactory
{
static
Contact
main
;
static
Contact
aux
;
static
unique_ptr
<
Contact
>
NewMainOfficeEmployee
(
string
name
,
int
suite
)
{
return
NewEmployee
(
name
,
suite
,
main
)
;
}
static
unique_ptr
<
Contact
>
NewAuxOfficeEmployee
(
string
name
,
int
suite
)
{
return
NewEmployee
(
name
,
suite
,
aux
)
;
}
private
:
static
unique_ptr
<
Contact
>
NewEmployee
(
string
name
,
int
suite
,
Contact
&
proto
)
{
auto
result
=
make_unique
<
Contact
>
(
proto
)
;
result
->
name
=
name
;
result
->
address
->
suite
=
suite
;
return
result
;
}
}
;
//
사
용
auto
john
=
EmployeeFactory
::
NewAuxOfficeEmployee
(
"
John Doe
"
,
123
)
;
auto
jane
=
EmployeeFactory
::
NewMainOfficeEmployee
(
"
Jane Doe
"
,
125
)
;
팩토리를 사용해서 미완성된 객체 복제본이 생성될 수 있을 가능성을 막을 수 있다.
(이전에 프로토타입 복사는 사용자가 직접 내용을 수정해 주어야 했음, 프로토타입 팩토리는 수정까지 해서
복사본을 리턴해 줌)